package com.lwc.backendsinglestructure.controller;

import cn.hutool.http.HttpUtil;
import com.lwc.backendsinglestructure.common.BaseResponse;
import com.lwc.backendsinglestructure.domain.dto.user.LoginForm;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

/**
 * 微信小程序接口
 */
@RestController
@RequestMapping("/mini")
public class WxMiniProgramController {

    @Value("${weixin.miniprogram.appid}")
    private String appId;
    @Value("${weixin.miniprogram.appsecret}")
    private String appsecret;

    /**
     * todo 微信小程序根据临时 code 获取openid 和 sessionkey
     * @param code
     * @return
     */
    @PostMapping("/login")
    public BaseResponse<?> login(@RequestParam String code){
        // GET https://api.weixin.qq.com/sns/jscode2session 调用
        String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + appId + "&secret=" + appsecret + "&js_code=" + code + "&grant_type=authorization_code";
        String result = HttpUtil.get(url);
        // 返回 session_key 和 openid 。 塞入jwt载荷里面 返回token给小程序保存本地，每次请求携带上token
        // {"session_key":"z8wprDu1yUsbZiZo1lF9Iw==","openid":"oRjZLvoPAL-GKPmzxSGNYPFcW5cw"}
        // 可以通过openid查询一下用户信息
        // 没有的话就默认注册一个新用户到数据库里面
        // 头像 昵称 手机的话可以前端一起传过来，先在一个表单form前端通过调用微信官方api选择 wx的头像 手机号 昵称等等 一起连着code提交到后端
        return null;
    }


    /**
     * todo 小程序端获取用户信息
     * @return
     */
    @PostMapping("/getUserInfo")
    public BaseResponse<?> getUserInfo(){
        // 解析token里面的openid 进行查询数据库返回给小程序渲染数据
        return null;
    }
}
